A switching fabric is a network of interconnected integrated circuits that operate to switch (i.e., route) data packets from input ports to output ports in a single network system. Typically, switching fabrics switch data packets between central processing units (CPUs), memory units, and input/output (I/O) units of single network systems.
Typically, data is source routed within the switching fabric using an encoding scheme that allows the switches to determine which way to route data. In a classically organized 2D matrix switching fabric with all switches available for messages to be transmitted, all turns are possible from any one location in the switching fabric. That is, data can be routed in any direction from each switching point in the switching fabric. When more than one packet arrives concurrently at a switch, the switching fabric arbitrates between traffic destined for the same output port. Typically, resources (i.e., switches in the switching fabric, links between switches, buffers along the lines, etc.) are occupied by data packets in a wormhole fashion (i.e., a packet travels in successive pieces and thus may occupy several resources)
In some cases, data packets routed in such a 2D switching fabric may deadlock. For example, two (or more) messages may mutually block each other if they block the progression of each other simultaneously. Deadlock may also occur if messages double back on themselves (i.e., get stuck in an infinite waiting loop). Typically, provisions against deadlocking in switching fabrics involve the use of buffers, and/or control logic or software to delay or regulate or constrain the route that data takes from a particular source to a particular destination. For example, buffers in the switching fabric can be used to cache particular data routing patterns temporarily so that packets being routed through the same switching point do not block each other.